#  lib/asm

Slagheap lib/asm - набор ассемблерных библиотек в формате Everest Core.

Ниже сгруппированы библиотечные функции системы. Переходите по ссылкам для подробного описания модулей.

## Содержимое директорий

- [Terminal driver ](tty) - библиотека функций текстовой виртуальной консоли;
- [VGA display driver ](vga) - библиотека для работы с видеокартой 640x480x32, клавиатурой, мышью и таймером;
- [String manipulation utilites](string) - функции работы со строками;
- [Protocols](protocols) - реализация приёма данных по протоколу X-modem;
- [Emulate](emulate) - программная реализация расширений и поддержки оборудования;

## Описание портов

  Порты это одно из средств коммуникации процессора с внешним миром. Некоторые процессоры имеют специальные инструкции 
  для работы с портами. В системе Террикон портам отведён дипазанон адресов 64 килобайта: 0xfffe0000 - 0xfffefffc, 
  выровненных на размер машинного слова (32 бита у Slagheap).

<pre>
  ; ------------- READ registers
$TICK_LOW 		equ 0xfffefffc  ; Возвращает число микросекунд с момента старта хост- системы. Младшие 32 бита
$TICK_HIGH 		equ 0xfffefff8  ; Возвращает число микросекунд с момента старта хост- системы. Старшие 32 бита
$UART_RCV_DATA 		equ 0xfffefff4  ; Возвращает байт данных, принятый по последовательному порту
$UART_STATUS 		equ 0xfffefff0  ; Возвращает статус последовательно порта - наличие принятых данных и готовность к передаче 
$WINDOW_EVENT 		equ 0xfffeffe4	; Получает события от окнного менеджера - клавитуры, мыши и таймера (чтение с блокировкой)
$WINDOW_WPARAM		equ 0xfffeffe8  ; Параметры соответствуют сообщениям Microsoft Windows
$WINDOW_LPARAM  	equ 0xfffeffec  ; Данные в регистрах задерживаются до следующего чтения WINDOW_EVENT
$FONT_3			equ 0xfffeffcc  ; Возвращает указатель в памяти на растровый шрифт №3
$FONT_2         	euu 0xfffeffc8  ; Возвращает указатель в памяти на растровый шрифт №2
$FONT_1         	equ 0xfffeffc4  ; Возвращает указатель в памяти на растровый шрифт №1
$FONT_0         	equ 0xfffeffc0  ; Возвращает указатель в памяти на растровый шрифт №0
$STEP_COUNTER		equ 0xfffeffb0  ; Счётчик выполненных команд с момента старта
$CPU_SPEED_COUNTER	equ 0xfffeffb4  ; Рассчётная скорость процессора. 

; ------------- WRITE registers
$UART_TX       equ 0xfffefff4 ; Запись в этот порт передаёт байт данных по последовательному порту
$VIDEO_REFRESH equ 0xfffeffe0; Регистр управления видеоконтроллером
$VIDEO_VSCROLL equ 0xfffeffe8; Регистр вертиканного сдвига экрана.
$VIDEO_HSCROLL equ 0xfffeffec; Регистр гонизонатльного сдвига экрана.



</pre>

Чтение и запись в эти регистры позволяет виртуальному компьютеру взаимодействовать с "виртуальным железом", которое моделируется через 
обращене к этим портам.
